package com.trf.member.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.trf.member.base.Page;
import com.trf.member.base.Result;
import com.trf.member.entity.Member;
import com.trf.member.mapper.MemberMapper;
import com.trf.member.req.MemberREQ;
import com.trf.member.service.IMemberService;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;


/**
 * @author 小小唐
 * @Date 2023/3/4-星期六-18:47
 * 继承 ServiceImpl<MemberMapper, Member>
 * 并且对接口 IMemberService 进行实现
 *
 * 会员信息表 服务实现类
 */


@Service
public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> implements IMemberService {

    /**
     * 实现条件查询分页接口的方法
     * @param page 页数
     * @param size 大小
     * @param req 查询条件
     * @return
     */
    @Override
    public Result search(Long page, Long size, MemberREQ req) {
        //封装查询条件
        QueryWrapper<Member> query = new QueryWrapper<>();
        if (req != null){
           /*
            org.springframework 没有isNotBlank方法
            isNotBlank方法用于判断某字符串是否不为空
            且长度不为0
            且不由空白符(whitespace)构成，
            等于!isBlank(String str)
            */
            if(StringUtils.isNotBlank(req.getName())){
                query.like("name",req.getName());
            }
        if (StringUtils.isNotBlank(req.getCardNum())){
            query.like("card_num",req.getCardNum());
        }
        if (StringUtils.isNotBlank(req.getPayType())){
            query.like("pay_type",req.getPayType());
        }
        if (req.getBirthday() != null){
            query.eq("birthday",req.getBirthday());
        }
        }

        //封装分页对象
        IPage<Member> p = new Page<>(page, size);
        IPage<Member> data = baseMapper.selectPage(p, query);
        return Result.ok(data);
    }

    /**
     * 通过查询会员id修改会员详情
     * @param id 会员id
     * @param member 会员详情
     * @return
     */
    @Override
    public Result update(int id, Member member) {
        //如果我们的会员id为空，那么可以直接添加
        if (member.getId() == null){
            member.setId(id);
        }
        //更新操作
        int size = baseMapper.updateById(member);
        if (size < 1){
            return Result.error("修改会员失败");
        }
        return Result.ok();
    }
}
